package baocuntupian.com.sharedprefences;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.view.WindowManager;
import android.app.AlertDialog;

/**
 * Created by TBR
 */

public class DialogUtils {
    /**
     * 显示一个对话框
     * @param context 上下文对象，最好给Activity，否则需要android.permission.SYSTEM_ALERT_WINDOW
     * @param title 标题
     * @param message 消息
     * @param confirmButton 确认按钮
     * @param confirmButtonClickListener 确认按钮点击监听器
     * @param centerButton 中间按钮
     * @param centerButtonClickListener 中间按钮点击监听器
     * @param cancelButton 取消按钮
     * @param cancelButtonClickListener 取消按钮点击监听器
     * @param onShowListener 显示监听器
     * @param cancelable 是否允许通过点击返回按钮或者点击对话框之外的位置关闭对话框
     * @param onCancelListener 取消监听器
     * @param onDismissListener 销毁监听器
     * @return 对话框
     */
    public static AlertDialog showAlert(Context context, String title, String message,
                                        String confirmButton, DialogInterface.OnClickListener confirmButtonClickListener,
                                        String centerButton, DialogInterface.OnClickListener centerButtonClickListener,
                                        String cancelButton, DialogInterface.OnClickListener cancelButtonClickListener,
                                        DialogInterface.OnShowListener onShowListener,
                                        boolean cancelable, DialogInterface.OnCancelListener onCancelListener,
                                        DialogInterface.OnDismissListener onDismissListener){
        AlertDialog.Builder promptBuilder = new AlertDialog.Builder(context);
        if(title != null){
            promptBuilder.setTitle(title);
        }
        if(message != null){
            promptBuilder.setMessage(message);
        }
        if(confirmButton != null){
            promptBuilder.setPositiveButton(confirmButton, confirmButtonClickListener);
        }
        if(centerButton != null){
            promptBuilder.setNeutralButton(centerButton, centerButtonClickListener);
        }
        if(cancelButton != null){
            promptBuilder.setNegativeButton(cancelButton, cancelButtonClickListener);
        }
        promptBuilder.setCancelable(true);
        if(cancelable){
            promptBuilder.setOnCancelListener(onCancelListener);
        }
        AlertDialog alertDialog = promptBuilder.create();
        if(!(context instanceof Activity)){
            alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        }
        alertDialog.setOnDismissListener(onDismissListener);
        alertDialog.setOnShowListener(onShowListener);
        alertDialog.show();
        return alertDialog;
    }

    /**
     * 显示一个对话框
     * @param context 上下文对象，最好给Activity，否则需要android.permission.SYSTEM_ALERT_WINDOW
     * @param title 标题
     * @param message 消息
     * @param confirmButton 确认按钮
     * @param confirmButtonClickListener 确认按钮点击监听器
     * @param cancelButton 取消按钮
     * @param cancelButtonClickListener 取消按钮点击监听器
     * @return 对话框
     */
    public static AlertDialog showAlert(Context context, String title, String message,
                                        String confirmButton, DialogInterface.OnClickListener confirmButtonClickListener,
                                        String cancelButton, DialogInterface.OnClickListener cancelButtonClickListener){
        return showAlert(context, title, message, confirmButton, confirmButtonClickListener, null, null, cancelButton, cancelButtonClickListener, null, true, null, null);
    }

    /**
     * 显示一个提示框
     * @param context 上下文对象，最好给Activity，否则需要android.permission.SYSTEM_ALERT_WINDOW
     * @param message 提示的消息
     * @param confirmButton 确定按钮的名字
     */
    public static AlertDialog showPrompt(Context context, String message, String confirmButton){
        return showAlert(context, null, message, confirmButton, null, null, null, null, null, null, true, null, null);
    }

    /**
     * 显示一个提示框
     * @param context 上下文对象，最好给Activity，否则需要android.permission.SYSTEM_ALERT_WINDOW
     * @param message 提示的消息
     */
    public static AlertDialog showPrompt(Context context, String message){
        return showAlert(context, null, message, "OK", null, null, null, null, null, null, true, null, null);
    }


}
